#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import os
import re
sys.path.append('src')

from processors.docx_processor import DOCXProcessor

def analyze_choice_structure():
    """分析选择题文件结构"""
    
    file_path = 'data/原始数据---选择题.docx'
    
    try:
        processor = DOCXProcessor()
        
        with open(file_path, 'rb') as f:
            file_content = f.read()
        
        result = processor.extract_content(file_content)
        text = result['text']
        
        print('=== 分析选择题结构 ===')
        
        # 使用正则表达式查找题目模式
        # 匹配模式：数字+点+题目内容+答案
        pattern = r'(\d+\.[^\d]*?答案：[^\n]*?)(?=\d+\.|$)'
        matches = re.findall(pattern, text, re.DOTALL)
        
        print(f'找到题目数量: {len(matches)}')
        
        # 显示前5道题的结构
        print('\n=== 前5道题的结构 ===')
        for i, match in enumerate(matches[:5]):
            print(f'\n--- 题目 {i+1} ---')
            print(match.strip())
            print('--- 结束 ---')
        
        # 分析分隔符模式
        print('\n=== 分隔符分析 ===')
        
        # 方案1：使用题号作为分隔符
        print('方案1：使用题号模式 (\\d+\\.) 作为分隔符')
        
        # 方案2：使用答案结束作为分隔符
        print('方案2：使用答案行作为题目结束标志')
        
        # 测试切片效果
        print('\n=== 测试切片效果 ===')
        
        # 使用题号分隔
        chunks = []
        current_chunk = ""
        lines = text.split('\n')
        
        for line in lines:
            line = line.strip()
            if not line:
                continue
                
            # 检查是否是新题目开始（数字+点开头）
            if re.match(r'^\d+\.', line) and current_chunk and '答案：' in current_chunk:
                # 保存当前题目
                chunks.append(current_chunk.strip())
                current_chunk = line
            else:
                if current_chunk:
                    current_chunk += '\n' + line
                else:
                    current_chunk = line
        
        # 添加最后一个题目
        if current_chunk and '答案：' in current_chunk:
            chunks.append(current_chunk.strip())
        
        print(f'切片数量: {len(chunks)}')
        
        # 显示前3个切片
        print('\n=== 前3个切片 ===')
        for i, chunk in enumerate(chunks[:3]):
            print(f'\n--- 切片 {i+1} ---')
            print(chunk)
            print('--- 结束 ---')
        
        # 建议的分隔符
        print('\n=== 建议的切片策略 ===')
        print('1. 使用正则表达式模式: ^\\d+\\.')
        print('2. 或者使用自定义分隔符，在每个题号前添加特殊标记')
        print('3. 推荐使用"题目结构"切片策略，识别题号模式')
        
    except Exception as e:
        print(f'分析文件时出错: {e}')
        import traceback
        traceback.print_exc()

if __name__ == '__main__':
    analyze_choice_structure()